#ifndef __MIXTE_H__
#define __MIXTE_H__

#include <list>
#include <iostream>
#include <boost/regex.hpp>

#include "SimpleName.h"
#include "DTDElement.h"

using namespace std;
using namespace boost;

class Mixte : public DTDElement
{
	public:
		/**
		* Constructeur par défaut.
		*/
		Mixte();
		
		/**
		* Constructeur par liste d'éléments
		* paramètre : list : liste de SimpleName avec laquelle Mixte sera construit.
		*/
		Mixte( std::list< SimpleName* >& list );

		/**
		* Destructeur de Mixte.
		* Libère totalement la mémoire.
		*/
		virtual ~Mixte();

		/**
		* Permet d'ajouter un SimpleName à la liste de Mixte.
		* param : name est le SimpleName qui sera ajouté dans la liste.
		*/
		void addName( SimpleName* name );

		/**
		* Permet un afficage de l'élément avec la syntaxe d'une DTD.
		*/
		void printMe();

		/**
		* Crée l'expression régulière de l'élément.
		*/
		virtual pair<string, regex> toRegExp();

	protected:
		/**
		* Liste des SimpleName de Mixte.
		*/
		list<SimpleName*>	names;
};

#endif // #define __MIXTE_H__

